home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Whiteline: delta
/
whiteline CD Series - delta.iso
/
progtool
/
modula2
/
module
/
kassenst.mod
< prev
next >
Wrap
Text File
|
1995-11-25
|
16KB
|
432 lines
IMPLEMENTATION MODULE KassenStand;
FROM BlRscInc IMPORT INVENDIA, (* TREE *) BIERE ,
LIMOS , KASSETEO, KASSEPRK, SBEIFAX , AUSSENST ,
CNCLINVT , OKINVNT , (* OBJECTs in TREE #6 *) SPENDDIA, (* TREE *)
OKSPENDE , CNCLSPND , SPNDBTRG; (* OBJECTs in TREE #7 *)
FROM EdiereBierListe IMPORT AnfangsUebertrag, BierListe,
ComputeCustomer, SaveList, LoadList, LoadOldList;
FROM BListe IMPORT Kunde,First,Next,AtLast,Empty,GetValue;
FROM Bestellungen IMPORT AusgabenFuerBierKauf, AusgabenFuerLimoKauf,
GekaufteBierFlaschen, GekaufteLimoFlaschen,
SchuldenAnFax;
FROM PreisErfassung IMPORT VerkaufsPreis,SavePreise,LoadPreise,LoadOldPreise;
FROM SYSTEM IMPORT ADDRESS,VAL;
FROM AES IMPORT FormAlert,ResourceGetAddr;
FROM EasyDialog IMPORT DoDialog,GetText,SetText,IsSelected;
FROM ConvertStr IMPORT StrToInt,IntToStr,LongIntToStr,StrToLongInt;
FROM InOut IMPORT OpenOutput,CloseOutput,OpenInput,CloseInput,Done,
WriteString,WriteInt,ReadInt,WriteLn;
FROM LongInOut IMPORT ReadLongInt,WriteLongInt;
FROM Strings IMPORT Delete;
VAR Kasse : RECORD
Einnahmen,SummeDerEinnahmen,
SpendenEingang,SummeDerSpenden,
Ausgaben,SummeDerAusgaben,
BierEinkaufsWert,SummeBierEinkaufsWert,
LimoEinkaufsWert,SummeLimoEinkaufsWert,
BierVerkaufsWert,SummeBierVerkaufsWert,
LimoVerkaufsWert,SummeLimoVerkaufsWert,
AnfangsStand :LONGINT;
BierFlaschenEinGang,SummeDerBierFlaschen,
LimoFlaschenEinGang,SummeDerLimoFlaschen,
BierStriche,SummeDerBierStriche,
LimoStriche,SummeDerLimoStriche :INTEGER;
END(*RECORD*);
AnfangsUebertragnaechsteListe,
EndUebertrag : LONGINT;
PROCEDURE SpendenErfassen;
VAR SpendenDiaAddr :ADDRESS;
DiaRet :INTEGER;
SpendenStr :ARRAY [0..5] OF CHAR;
OK :BOOLEAN;
BEGIN
ResourceGetAddr(0,SPENDDIA,SpendenDiaAddr);
DiaRet:=DoDialog(SpendenDiaAddr,SPNDBTRG);
IF DiaRet=OKSPENDE THEN
GetText(SPNDBTRG,SpendenDiaAddr,SpendenStr);
StrToLongInt(SpendenStr,Kasse.SpendenEingang,OK);
END(*IF*);
END SpendenErfassen;
PROCEDURE ComputeKassenRecord;
VAR
StricheBeiBier,
StricheBeiLimo : INTEGER;
Customer : Kunde;
PROCEDURE ComputeList;
VAR OK : BOOLEAN;
BEGIN
EndUebertrag:=0D;
IF ~Empty(BierListe) THEN
First(BierListe);
LOOP
OK:=GetValue(BierListe,Customer);
EndUebertrag:= EndUebertrag+Customer.Uebertrag;
AnfangsUebertragnaechsteListe:=
AnfangsUebertragnaechsteListe+Customer.Rechnung;
StricheBeiBier:= StricheBeiBier+Customer.Biere;
StricheBeiLimo:= StricheBeiLimo+Customer.Limos;
IF AtLast(BierListe) THEN EXIT END(*IF*);
Next(BierListe);
END(*LOOP*);
END(*IF*);
END ComputeList;
BEGIN
AnfangsUebertragnaechsteListe:=0D;
EndUebertrag:=0D;
StricheBeiBier:=0;
StricheBeiLimo:=0;
ComputeList;
WITH Kasse DO
Einnahmen:=AnfangsUebertrag-EndUebertrag;
(* AnfangsUebertrag-EndUebertrag = Eingänge aus Bierliste *)
BierEinkaufsWert:=AusgabenFuerBierKauf;
LimoEinkaufsWert:=AusgabenFuerLimoKauf;
Ausgaben:=BierEinkaufsWert+LimoEinkaufsWert;
(* AnfangsStand bleibt gleich *)
BierFlaschenEinGang:=GekaufteBierFlaschen;(* gelieferte BierKästen * Flaschen/Kasten *)
LimoFlaschenEinGang:=GekaufteLimoFlaschen;(* -----"---- *)
BierVerkaufsWert:=VAL(LONGINT,(GekaufteBierFlaschen*VerkaufsPreis.BierPreis));
(* gelieferte Bierkästen * Flaschen/Kasten * BierVerkaufsPreis *)
LimoVerkaufsWert:=VAL(LONGINT,(GekaufteBierFlaschen*VerkaufsPreis.LimoPreis));
(* -----"----- *)
BierStriche:=StricheBeiBier;(* Summe der BierStriche aller Kunden *)
LimoStriche:=StricheBeiLimo;
END(*WITH*);
END ComputeKassenRecord;
PROCEDURE Record0Initialisieren;
BEGIN
WITH Kasse DO
Einnahmen:=0D;
SpendenEingang:=0D;
Ausgaben:=0D;
BierEinkaufsWert:=0D;
LimoEinkaufsWert:=0D;
BierVerkaufsWert:=0D;
LimoVerkaufsWert:=0D;
AnfangsStand:=0D;
BierFlaschenEinGang:=0;
LimoFlaschenEinGang:=0;
BierStriche:=0;
LimoStriche:=0;
END(*WITH*);
END Record0Initialisieren;
PROCEDURE RecordSummen0Initialisieren;
BEGIN
WITH Kasse DO
SummeDerEinnahmen:=0D;
SummeDerSpenden:=0D;
SummeDerAusgaben:=0D;
SummeBierEinkaufsWert:=0D;
SummeLimoEinkaufsWert:=0D;
SummeBierVerkaufsWert:=0D;
SummeLimoVerkaufsWert:=0D;
AnfangsStand:=0D;
SummeDerBierFlaschen:=0;
SummeDerLimoFlaschen:=0;
SummeDerBierStriche:=0;
SummeDerLimoStriche:=0;
END(*WITH*);
END RecordSummen0Initialisieren;
PROCEDURE RecordInitialisieren;
BEGIN
WITH Kasse DO
SummeDerEinnahmen:=
Einnahmen+SummeDerEinnahmen;
SummeDerSpenden:=
SpendenEingang+SummeDerSpenden;
SummeDerAusgaben:=
Ausgaben+SummeDerAusgaben;
SummeBierEinkaufsWert:=
BierEinkaufsWert+SummeBierEinkaufsWert;
SummeLimoEinkaufsWert:=
LimoEinkaufsWert+SummeLimoEinkaufsWert;
SummeBierVerkaufsWert:=
BierVerkaufsWert+SummeBierVerkaufsWert;
SummeLimoVerkaufsWert:=
LimoVerkaufsWert+SummeLimoVerkaufsWert;
SummeDerBierFlaschen:=
BierFlaschenEinGang+SummeDerBierFlaschen;
SummeDerLimoFlaschen:=
LimoFlaschenEinGang+SummeDerLimoFlaschen;
SummeDerBierStriche:=
BierStriche+SummeDerBierStriche;
SummeDerLimoStriche:=
LimoStriche+SummeDerLimoStriche;
END(*WITH*);
Record0Initialisieren;
END RecordInitialisieren;
PROCEDURE WriteKassenRecord;
BEGIN
ComputeKassenRecord;
WITH Kasse DO
WriteLongInt(Einnahmen,10);WriteLongInt(SummeDerEinnahmen,10);
WriteLongInt(SpendenEingang,10);WriteLongInt(SummeDerSpenden,10);
WriteLongInt(Ausgaben,10);WriteLongInt(SummeDerAusgaben,10);
WriteLongInt(BierEinkaufsWert,10);WriteLongInt(SummeBierEinkaufsWert,10);
WriteLn;
WriteLongInt(LimoEinkaufsWert,10);WriteLongInt(SummeLimoEinkaufsWert,10);
WriteLongInt(BierVerkaufsWert,10);WriteLongInt(SummeBierVerkaufsWert,10);
WriteLongInt(LimoVerkaufsWert,10);WriteLongInt(SummeLimoVerkaufsWert,10);
WriteLongInt(AnfangsStand,10);
WriteLn;
WriteInt(BierFlaschenEinGang,10);WriteInt(SummeDerBierFlaschen,10);
WriteInt(LimoFlaschenEinGang,10);WriteInt(SummeDerLimoFlaschen,10);
WriteInt(BierStriche,10);WriteInt(SummeDerBierStriche,10);
WriteInt(LimoStriche,10);WriteInt(SummeDerLimoStriche,10);
END(*WITH*);
END WriteKassenRecord;
PROCEDURE ReadKassenRecord;
BEGIN
WITH Kasse DO
ReadLongInt(Einnahmen);ReadLongInt(SummeDerEinnahmen);
ReadLongInt(SpendenEingang);ReadLongInt(SummeDerSpenden);
ReadLongInt(Ausgaben);ReadLongInt(SummeDerAusgaben);
ReadLongInt(BierEinkaufsWert);ReadLongInt(SummeBierEinkaufsWert);
ReadLongInt(LimoEinkaufsWert);ReadLongInt(SummeLimoEinkaufsWert);
ReadLongInt(BierVerkaufsWert);ReadLongInt(SummeBierVerkaufsWert);
ReadLongInt(LimoVerkaufsWert);ReadLongInt(SummeLimoVerkaufsWert);
ReadLongInt(AnfangsStand);
ReadInt(BierFlaschenEinGang);ReadInt(SummeDerBierFlaschen);
ReadInt(LimoFlaschenEinGang);ReadInt(SummeDerLimoFlaschen);
ReadInt(BierStriche);ReadInt(SummeDerBierStriche);
ReadInt(LimoStriche);ReadInt(SummeDerLimoStriche);
END(*WITH*);
END ReadKassenRecord;
PROCEDURE DruckOK():BOOLEAN;
VAR s: ARRAY [0..127] OF CHAR;
formret : INTEGER;
BEGIN
s :='[2][Druck in Ordnung?|Ja = Druck OK|Nein = Druck wiederholen][ Ja | Nein ]';
formret:=FormAlert(1,s);
RETURN formret=1
END DruckOK;
PROCEDURE InventurMachen;
VAR InventurDiaAddr :ADDRESS;
DiaRet :INTEGER;
BierStr,LimoStr :ARRAY [0..2] OF CHAR;
SollKassenStdStr,
KassenStdStr,
SchuldenStr,
AussenStdStr :ARRAY [0..6] OF CHAR;
BierFlaschenSchwund,
LimoFlaschenSchwund,
BierImKSchrank,
LimoImKSchrank : INTEGER;
WertDesKSchranks,
AussenStaende,
SollKassenStand,
KassenStand : LONGINT;
OK : BOOLEAN;
PROCEDURE WriteDM(DeMark:LONGINT);
BEGIN
WriteLongInt((DeMark DIV 100D),5);
WriteString('.');
WriteLongInt((DeMark MOD 100D),2);
WriteString(' DM ');
END WriteDM;
PROCEDURE WriteProzent(a,b:LONGINT);
BEGIN
IF (a>0D)AND (b>0D) THEN
WriteLongInt((a*100D) DIV b,5);
WriteString('% ');
END(*IF*);
END WriteProzent;
PROCEDURE TexteBerechnen;
BEGIN
ComputeKassenRecord;
SollKassenStand:=Kasse.SummeBierVerkaufsWert- Kasse.SummeBierEinkaufsWert
+Kasse.AnfangsStand+Kasse.SummeLimoVerkaufsWert
-Kasse.SummeLimoEinkaufsWert;
KassenStand:=Kasse.SummeDerEinnahmen+Kasse.SummeDerSpenden
+Kasse.AnfangsStand-Kasse.SummeDerAusgaben
+Kasse.SpendenEingang+Kasse.SummeDerSpenden;
LongIntToStr(SollKassenStand,7,SollKassenStdStr,OK);
LongIntToStr(KassenStand,7,KassenStdStr,OK);
LongIntToStr(SchuldenAnFax(),7,SchuldenStr,OK);
AussenStaende:= AnfangsUebertragnaechsteListe;
LongIntToStr(AussenStaende,7,AussenStdStr,OK);
Delete(KassenStdStr,1,1);
Delete(SollKassenStdStr,1,1);
Delete(SchuldenStr,1,1);
Delete(AussenStdStr,1,1);
END TexteBerechnen;
BEGIN
TexteBerechnen;
ResourceGetAddr(0,INVENDIA,InventurDiaAddr);
SetText(KASSETEO,InventurDiaAddr,SollKassenStdStr);
SetText(KASSEPRK,InventurDiaAddr,KassenStdStr);
SetText(SBEIFAX,InventurDiaAddr,SchuldenStr);
SetText(AUSSENST,InventurDiaAddr,AussenStdStr);
DiaRet:=DoDialog(InventurDiaAddr,BIERE);
IF DiaRet=OKINVNT THEN
GetText(BIERE,InventurDiaAddr,BierStr);
GetText(LIMOS,InventurDiaAddr,LimoStr);
GetText(KASSEPRK,InventurDiaAddr,KassenStdStr);
GetText(AUSSENST,InventurDiaAddr,AussenStdStr);
StrToInt(BierStr,BierImKSchrank,OK);
StrToInt(LimoStr,LimoImKSchrank,OK);
StrToLongInt(AussenStdStr,AussenStaende,OK);
StrToLongInt(KassenStdStr,KassenStand,OK);
REPEAT
OpenOutput('PRN:');
WriteString('Aussenstände:');WriteDM(AussenStaende);
WriteLn;
WriteString('Kasseninhalt :');WriteDM(KassenStand);
WriteLn;
WriteString('Schulden beim Fax ');WriteDM(SchuldenAnFax());
WriteLn;
WriteString('Biere im KühlSchrank :');WriteInt(BierImKSchrank,5);
WriteLn;
WriteString('Limos im KühlSchrank :');WriteInt(LimoImKSchrank,5);
WriteLn;
WertDesKSchranks:=(VAL(LONGINT,(BierImKSchrank*VerkaufsPreis.BierPreis))+
VAL(LONGINT,(LimoImKSchrank*VerkaufsPreis.LimoPreis)));
WriteString('Wert der Getränke im Kühlschrank:');
WriteDM(WertDesKSchranks);
WriteLn;
WriteString('Kassenstand aus obigen');
WriteDM(WertDesKSchranks+KassenStand+AussenStaende-SchuldenAnFax());
WriteLn;
BierFlaschenSchwund:=(Kasse.BierFlaschenEinGang+Kasse.SummeDerBierFlaschen
-(Kasse.BierStriche+Kasse.SummeDerBierStriche)
-BierImKSchrank);
WriteString('Schwund an Bieren');WriteInt(BierFlaschenSchwund,7);
WriteString('Flaschen =');
WriteProzent((BierFlaschenSchwund),
(Kasse.BierFlaschenEinGang+Kasse.SummeDerBierFlaschen));
WriteLn;
LimoFlaschenSchwund:=(Kasse.LimoFlaschenEinGang+Kasse.SummeDerLimoFlaschen
-LimoImKSchrank)
-(Kasse.LimoStriche+Kasse.SummeDerLimoStriche);
WriteString('Schwund an Limos');WriteInt(LimoFlaschenSchwund,7);
WriteString('Flaschen =');
WriteProzent(LimoFlaschenSchwund,
(Kasse.LimoFlaschenEinGang+Kasse.SummeDerLimoFlaschen));
WriteLn;
WriteString('Schwund an Bargeld aus Kasse: ');
WriteDM(KassenStand-(Kasse.SummeDerEinnahmen+Kasse.Einnahmen
+Kasse.AnfangsStand-Kasse.SummeDerAusgaben-Kasse.Ausgaben
+Kasse.SpendenEingang+Kasse.SummeDerSpenden));
WriteString(' ');WriteLn;
WriteString('Gesammter Schwund');
WriteDM((Kasse.SummeDerEinnahmen+Kasse.Einnahmen)
- (Kasse.BierVerkaufsWert+Kasse.SummeBierVerkaufsWert
+Kasse.LimoVerkaufsWert+Kasse.SummeLimoVerkaufsWert)
-WertDesKSchranks);
WriteLn;
WriteString('Erwirtschafteter Überschuss (ohne Spenden)');
WriteDM((Kasse.SummeDerEinnahmen+Kasse.Einnahmen)
-(Kasse.SummeDerAusgaben+Kasse.Ausgaben));
WriteLn;
WriteString('Einnahmen aus Spenden :');
WriteDM(Kasse.SpendenEingang+Kasse.SummeDerSpenden);
WriteLn;
WriteString('Erwirtschafteter Überschuss (incl Spenden)');
WriteDM((Kasse.SummeDerEinnahmen+Kasse.Einnahmen)
-(Kasse.SummeDerAusgaben+Kasse.Ausgaben)
+(Kasse.SpendenEingang+Kasse.SummeDerSpenden));
WriteString(14C);
WriteLn;
WriteString('*****************************************************************');WriteLn;
WriteString('Einnahmen,SummeDerEinnahmen, SpendenEingang,SummeDerSpenden,');WriteLn;
WriteString('Ausgaben,SummeDerAusgaben, BierEinkaufsWert,SummeBierEinkaufsWert, CR');WriteLn;
WriteString('LimoEinkaufsWert,SummeLimoEinkaufsWert, BierVerkaufsWert,SummeBierVerkaufsWert,');WriteLn;
WriteString('LimoVerkaufsWert,SummeLimoVerkaufsWert, AnfangsStand, CR');WriteLn;
WriteString('BierFlaschenEinGang,SummeDerBierFlaschen, LimoFlaschenEinGang,SummeDerLimoFlaschen,');WriteLn;
WriteString('BierStriche,SummeDerBierStriche, LimoStriche,SummeDerLimoStriche');WriteLn;
WriteString('*******************************************************************');WriteLn;
WriteKassenRecord;
CloseOutput;
UNTIL DruckOK();
Record0Initialisieren;
RecordSummen0Initialisieren;
Kasse.BierFlaschenEinGang:=BierImKSchrank;
Kasse.LimoFlaschenEinGang:=LimoImKSchrank;
Kasse.BierVerkaufsWert:= VAL(LONGINT,(BierImKSchrank*VerkaufsPreis.BierPreis));
Kasse.LimoVerkaufsWert:= VAL(LONGINT,(LimoImKSchrank*VerkaufsPreis.LimoPreis));
Kasse.AnfangsStand:=KassenStand;
END(*IF*);
END InventurMachen;
PROCEDURE BierListeSpeichern(OutFileName : ARRAY OF CHAR);
VAR OK : BOOLEAN;
BEGIN
OpenOutput(OutFileName);
IF Done THEN
WriteKassenRecord;
SavePreise;
SaveList;
END(*IF*);
CloseOutput;
END BierListeSpeichern;
PROCEDURE BierListeLaden(InFileName :ARRAY OF CHAR);
BEGIN
OpenInput(InFileName);
IF Done THEN
ReadKassenRecord;
RecordInitialisieren;
LoadPreise;
LoadList;
END(*IF*);
CloseInput;
END BierListeLaden;
PROCEDURE AlteBierListeLaden(InFileName :ARRAY OF CHAR);
BEGIN
OpenInput(InFileName);
IF Done THEN
ReadKassenRecord;
LoadOldPreise;
LoadOldList;
END(*IF*);
CloseInput;
END AlteBierListeLaden;
BEGIN
Record0Initialisieren;
RecordSummen0Initialisieren
END KassenStand.